/**
 * jims
 */
package com.jims.master.modules.finance.dao;

import com.jims.master.common.persistence.CrudDao;
import com.jims.master.common.persistence.Page;
import com.jims.master.common.persistence.annotation.MyBatisDao;
import com.jims.master.common.web.impl.BaseDto;
import com.jims.master.modules.doctor.entity.PatVisit;
import com.jims.master.modules.finance.entity.InpBillDetail;
import org.apache.ibatis.annotations.Param;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.Date;
import java.util.List;
/**
 * DAO接口
 * @author 赵宁
 * @version 2017-03-28
 */
@MyBatisDao
public interface InpBillDetailDao extends CrudDao<InpBillDetail> {
    /**
     * 根据住院号查询 病人住院费用明细
      * @param inpBillDetail
     * @return
     */
    public List<InpBillDetail> findBillDetails(InpBillDetail inpBillDetail);

    /**
     * 一日清单查询费用明细
     * @param visitId
     * @return
     * @author 赵宁
     */
    public List<BaseDto> findDetails(@Param("visitId")String visitId,@Param("startDate")String startDate,@Param("endDate")String endDate);

    /**
     * 确认退药
     * @param ids
     * @return
     */
    public int doConfirm(@Param("ids") List<String> ids);

    /**
     * 护理端-一日清单打印
     * @param patVisit
     * @return
     * @author CTQ
     */
    public List<BaseDto> getBillItems(@Param("patVisit")PatVisit patVisit);

    /**
     * 护理端-查询费用信息-打印查询
     * @param inpBillDetail
     * @return
     * @author CTQ
     */
    public List<BaseDto> findChargeNurse(InpBillDetail inpBillDetail);
    /**
     * 护理端-计价单-打印查询
     * @param inpBillDetail
     * @return
     * @author CTQ
     */
    public List<BaseDto> getNursePrice(InpBillDetail inpBillDetail);

    /**
     * 按月查询收费数据
     * @param orgId 机构id
     * @param startDate 开始时间
     *  @param endDate  结束时间
     * @return
     * @author zhangyao
     */
    public List<BaseDto> queryMonthList(@Param("orgId") String orgId,@Param("startDate")Date startDate,@Param("endDate")Date endDate);

    /**
     * 删除收费明细
     * @param inpBillDetail
     * @return
     * @author 赵宁
     */
    public int deleteInpDetails(InpBillDetail inpBillDetail);

    /**
     * 查询病人实收费用总和
     * @param inpBillDetail
     * @return
     * @author CTQ
     */
    public Double findSumCharges(InpBillDetail inpBillDetail);
    /**
     * 根据时间查询病区工作量
     * @param inpBillDetail
     * @return
     * @author 杨富达
     */
    public List<InpBillDetail> wardCodeFindPage(InpBillDetail inpBillDetail);


    /**
     * 根据住院号查询 病人住院费用明细
     * 医保住院上传
     * @param inpBillDetail
     * @return
     */
    public List<BaseDto> findBillDetailList(InpBillDetail inpBillDetail);



    /**
     * 退药查询
     * @param inpBillDetail
     * @return
     * @author zhangyao
     * @date 2017/7/20
     */
    public List<InpBillDetail> findListDrugsGroup(InpBillDetail inpBillDetail);



    /**
     * 多条件查询 病人住院费用明细
     * 医保住院上传
     * @param inpBillDetail
     * @return
     * @author xueliang
     */

    public List<InpBillDetail> findListBy(InpBillDetail inpBillDetail);



    /**
     * 修改住院是否医保上传状态
     * 医保是否上传 1上传 0未上传
     * @param inpBillDetail
     * @return
     */
    int updtateIsUpload(InpBillDetail inpBillDetail);

    /**
     * 医嘱瓶签list查询
     * @param InpBillDetail
     * @return
     * @author lizhongyu
     */
    public List<InpBillDetail> findByInpPage(InpBillDetail inpBillDetail);

    /**
     * 获取申请单明细
     * @return
     */
    public List<InpBillDetail> getApplyitem(InpBillDetail inpBillDetail);

    /**
     * emr-病案首页费用查询
     * @param patientId
     * @param visitId
     * @return
     * @author 赵宁
     */
    public List<BaseDto> findMrCosts(@Param("patientId")String patientId,@Param("visitId")String visitId);
}